package huawei;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.TreeMap;
import java.util.TreeSet;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;

public class Staticsproduce {
    public static void main(String args[]) {
        Scanner in=new Scanner(System.in);
        int ilen=in.nextInt();
        String[] iarr=new String[ilen];
        for (int i=0;i<ilen; i++) {
            iarr[i]=in.next();
        }
        int rlen=in.nextInt();
        Set<Integer> rarrset=new TreeSet<Integer>(); 
        for (int j=0; j<rlen; j++) {
            rarrset.add(Integer.valueOf(in.nextInt()));
        }
        Integer[] rarr=rarrset.toArray(new Integer[]{});
        Arrays.sort(rarr);
        Map<Integer,List<Integer>> map=new TreeMap<Integer,List<Integer>>();
        for (int i=0; i<rarr.length; i++) {
            List<Integer> list=new ArrayList<Integer>();
            for (int j=0; j<ilen; j++) {
             if(iarr[j].indexOf(rarr[i].toString())>=0){
                list.add(j);
             }        
            }
            if (list.size()>0) {
                 map.put(rarr[i],list);
             }
        }
        int numamount=map.size()*2;
        for (Integer key : map.keySet()) {
            numamount=map.get(key).size()*2+numamount;
        }

        System.out.print(numamount+" ");
         for (Integer key : map.keySet()) {
            System.out.print(key+" "+map.get(key).size()+" ");
            for (Integer t: map.get(key)) {
                System.out.print(t+" "+iarr[t]+" ");
            }
        }
        System.out.println("\n");
    }
}
